package com.dingwen.treasure.base.util;

import lombok.experimental.UtilityClass;

import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Supplier;

/**
 * 　OptionalUtil
 * 　@author dingwen
 * 　@date 2022/7/19
 */
@UtilityClass
public class OptionalUtil {

    /**
     * 对象处理
     *
     * @param consumer 默认实现
     * @param supplier 缺省实现
     * @param t        t
     * @return {@link T}
     */
    public  <T> T objectHandler(Consumer<? super T> consumer, Supplier<? extends T> supplier, Optional<T> t) {
        // 不为空实现 consumer
        t.ifPresent(consumer);
        // 缺省实现 supplier
        t = Optional.of(t.orElseGet(supplier));
        return t.get();
    }

    /**
     * 对象处理
     *
     * @param supplierTrue true
     * @param supplierFalse false
     * @param optional   optional
     * @return {@link T}
     */
    public  <T> T objectHandler(Supplier<? extends T> supplierTrue, Supplier<? extends T> supplierFalse, Optional optional) {
        // 不为空实现 supplierTrue
        if (optional.isPresent()) {
            return supplierTrue.get();
        }
        // 缺省实现 supplierFalse
        return supplierFalse.get();
    }


    public static void main(String[] args) {
        System.out.println( System.getProperty("os.name").toLowerCase());
    }
}
